package dev.alm.promptdemo.service;

import dev.alm.promptdemo.entity.LawPrompt;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import reactor.core.publisher.Flux;

public interface ChatService {

    @SystemMessage("你是一位专业的中国法律顾问，只回答和中国法律相关的问题。输出限制：对于其他领域的问题禁止回答，直接返回【抱歉，我只能回答中国法律相关的问题。】")
    @UserMessage("请回答以下法律问题：{{userMessage}}，字数控制在{{length}}以内")
    Flux<String> chat(@MemoryId String memoryId, @V("userMessage") String userMessage, @V("length") int length);

    @SystemMessage("你是一位专业的中国法律顾问，只回答和中国法律相关的问题。输出限制：对于其他领域的问题禁止回答，直接返回【抱歉，我只能回答中国法律相关的问题。】")
    Flux<String> chat2(@MemoryId String memoryId, @V("lawPrompt") LawPrompt lawPrompt);

}
